package cn.com.w.simple.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * spring security 配置类
 *
 * WebSecurityConfigurerAdapter = 核心类
 * adapter：适配器
 */
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.formLogin()
                // 自定义登录界面
                .loginPage("/login.html")
                // 处理自定义登录逻辑
                .loginProcessingUrl("/login")
                // 处理登录成功后的跳转页面
                .defaultSuccessUrl("/main.html")
                // 处理登录失败后的跳转页面，必须是post
                .failureForwardUrl("/toError")
                // 自定义登录用户名参数
                //.usernameParameter("userName123")
                // 自定义登录密码参数
                //.passwordParameter("passWord123")
        ;

        // 授权
        http.authorizeRequests()
                // 放行登录界面
                .antMatchers("/login.html").permitAll()
                // 放行登录失败页面
                .antMatchers("/error.html").permitAll()
                // 所有请求都必须被认证（登录）
                .anyRequest().authenticated();

        // 关闭csrf防御
        http.csrf().disable();
    }
}
